package com.example.websocket.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

/**
 * 这里使用了[@EnableWebSocketMessageBroker]注解
 * 主要是用于开启使用STOMP协议来传输基于代理（MessageBroker）的消息
 * 这时控制器开始支持[@MessageMapping],就像是使用[@RequestMapping]一样
 *
 * @author shiwen
 * @date 2020/7/27
 */
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 注册一个STOMP节点（endpoint），并指定使用SockJs协议
        registry.addEndpoint("/endpointNasus").withSockJS();
        // 注册一个名为 /endpointChat 的STOMP节点（endpoint），并指定使用SockJS协议
        registry.addEndpoint("/endpointChat").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        // 广播式配置名 /nasus 消息代理，这个消息代理必须和 controller 中的 @Sendto 配置的地址前缀一样或全匹配
        // 点对点增加一个 /queue 消息代理
        registry.enableSimpleBroker("/queue", "/nasus/getResponse");
    }

}